﻿/*
*   创建设备属性显示窗口
*   由于TABLE的HTML标签在EXT中显示不正常，所以将设备属性的界面由EXT创建
*   页面中存在唯一的DIV，ID为deviceProperty,用于承载由EXT创建的显示界面
*/
var items = [];
var readers = [];
var p_items = null; //Panel字段属性
var jReader = null;
var o = [{ 'ENFIELD': 'ROOMID', 'CHFIELD': '机房ID', 'DATATYPE': 'VARCHAR2(64)' },
     { 'ENFIELD': 'ROOMNAME', 'CHFIELD': '机房名称', 'DATATYPE': 'VARCHAR2(64)' },
     { 'ENFIELD': 'BELONGAREA', 'CHFIELD': '所属区域', 'DATATYPE': 'VARCHAR2(64)' },
     { 'ENFIELD': 'ROOMIMAGE', 'CHFIELD': '图片源', 'DATATYPE': 'VARCHAR2(200)' },
     { 'ENFIELD': 'ADDRESS', 'CHFIELD': '机房地址', 'DATATYPE': 'VARCHAR2(200)' },
     { 'ENFIELD': 'LAT', 'CHFIELD': '纬度', 'DATATYPE': 'VARCHAR2(80)' },
     { 'ENFIELD': '经度', 'CHFIELD': 'LNG', 'DATATYPE': 'VARCHAR2(200)' },
     { 'ENFIELD': 'STATIONIP', 'CHFIELD': 'IP地址', 'DATATYPE': 'VARCHAR2(64)'}];
/*
*   创建属性性能显示界面
*   @param  t   类型,属性(property),性能(performance)，决定选择的界面显示方式
*/
function InitFormPanel(t) {
    //    Ext.QuickTips.init(); // 浮动信息提示

    //    Ext.form.Field.prototype.msgTarget = 'side'; // 设置控件的错误信息显示位置，主要可选的位置有：qtip,title,under,side,[elementId]
    var title = '属性';
    if (!p_items) {
        switch (t.toLowerCase()) {
            case 'property':
                title = '属性';
                break;
            case 'performance':
                initItems();
                title = '性能';
                break;
        }
    }
    //属性或性能显示表单
    var myForm = new Ext.FormPanel({
        id: 'form', //表单ID
        frame: true,
        bodyStyle: 'padding:5px 5px 0',
        defaults: { width: 230, disabled: true, border: false }, //表单所有字段共同属性
        defaultType: 'textfield', //表单字段类型
        width: 600, //表单宽度
        height: 500, //表单高度
        reader: jReader, //表单数据集
        items: p_items, //表单字段
        labelSeparator: ':', //定义文字标签后的符号
        labelWidth: 100//表单文字宽度
    });
    //页签
    var tabs = new Ext.TabPanel({
        labelAlign: 'center',
        region: 'center',
        margins: '0 0 0 0',
        activeTab: 0,
        border: false,
        items: [{ title: title, items: myForm}],
        defaults: {
            autoScroll: false
        },
        enableTabScroll: false
    });
    //窗口
    var fp = new Ext.Window({
        width: 500,
        height: 500,
        id: 'w',
        items: tabs,
        plain: true, //true则主体背景透明，false则主体有小差别的背景色，默认为false
        title: '窗口'
    });
    // loadData();
    fp.show();
}
//为表单加载数据
function loadData() {
    Ext.getCmp("form").getForm().load({
        url: 'Handler.ashx',
        params: { roomid: '2' },
        waitMsg: '正在载入数据...',
        waitTitle: "请稍候"

    });
}
/*
*   初始化界面属性和数据集各字段
*/
function initItems() {
    p_items = items;
    var c = new Ext.data.Record.create(readers);
    jReader = new Ext.data.JsonReader({
        root: 'data'
    },c );
}


//初始化数据集类型和字段
function setItems() {
    if (o) {
        var length = o.length;
        for (var i = 0; i < length; i++) {
            items.push({
                name: o[i].ENFIELD,
                fieldLabel: o[i].CHFIELD
            }); //添加显示字段
            readers.push({
                name: o[i].ENFIELD,
                type: getXType(o[i].DATATYPE)
            }); //数据存储对应的字段
        }
    }
}
//获取或转换数据集字段类型
function getXType(t) {
    var str = 'string';
    //去除类型中的长度
    var f = t.indexOf('(');//varchar2为strig类型，所以2是否去掉没有关系
    if (f > 0) {
        t = t.substring(0, f);
    }
    switch (t.toLowerCase()) {
        case 'date':
            str = 'date';
            break;
        case 'number':
            str = 'int';
            break;
        case 'float':
            str = 'float';
            break;
        case 'boolean':
            str = 'boolean';
            break;
        default:
            str = 'string';
            break;
    }
    return str;
}

    